10 REM :: ASSEMBLY LANGUAGE UTILITY 20 REM :: BY ERIC JEVON BRYANT 30 POKE53280,0:POKE53281,0:PRINTCHR$(5);:GOSUB1250:MN=1:A=1 40 REM :: MAIN MENU 50 OP=-1:X=1:GOSUB1110:ONMN-1GOTO60,320,540,810 60 REM :: CONVERSIONS 70 CC=0:QI=-5*(X=2)+-4*(X=3)+-3*(X=4)+-8*(X=5):ONX-1GOTO80,140,200,270 80 REM : DECIMAL TO HEX 90 PRINT"DECIMAL NUMBER: ";:GOSUB860:IFQTTHENOP=-1:A=2:LM=1:MN=2:GOTO50 100 DE=VAL(CC$(0)):IFDE<0ORDE>65535THENPRINT"INVALID NUMBER":PRINT:GOTO90 110 GOSUB120:PRINT"HEX CONVERSION: $";H$:PRINT:GOTO80 120 H$="":FORX=3TO0STEP-1:X%=DE/(16^X):DE=DE-X%*16^X:H$=H$+MID$(HE$,X%+1,1) 130 NEXT:RETURN 140 REM : HEX TO DECIMAL 150 PRINT"HEX NUMBER--------: ";:GOSUB860:IFQTTHENOP=-1:A=2:LM=1:MN=2:GOTO50 160 GOSUB170:PRINT"DECIMAL CONVERSION:";DE:PRINT:GOTO140 170 D=0:Q=3:FORX=1TO4:FORY=0TO15:IFMID$(CC$(0),X,1)=MID$(HE$,Y+1,1)THEN190 180 NEXTY 190 Z=Y*(16^(Q)):D=D+Z:Q=Q-1:NEXTX:DE=INT(D):RETURN 200 REM : DECIMAL TO BINARY 210 PRINT"DECIMAL NUMBER---: ";:GOSUB860:IFQTTHENOP=-1:A=2:LM=1:MN=2:GOTO50 220 DE=VAL(CC$(0)):IFDE<0ORDE>255THENPRINT"INVALID NUMBER":PRINT:GOTO210 230 GOSUB240:PRINT"BINARY CONVERSION: ";B$:PRINT:GOTO210 240 B$="":Y=128:FORX=1TO8:IFDE>=YTHENDE=DE-Y:B$=B$+"1":GOTO260 250 IFDE""THEN920 900 PRINT"[164]"+CHR$(157); 910 GOTO890 920 Z=ASC(Z$):ZL=LEN(IN$(CC)):IFZ=20THENPRINT" "+CHR$(157);:GOTO950 930 IFZL=QITHENIFCC=1000THENRETURN 940 IFZ=13THENPRINTCHR$(32);CHR$(20);:IFCC=0THENCC$(0)=IN$(0):PRINT:RETURN 950 IFZ=133THENPRINTCHR$(28);"ESCAPE";CR$;CHR$(5);:QT=-1:RETURN 960 IFZ=20ANDZL=0THEN890 970 IFZ=20THENIN$(CC)=LEFT$(IN$(CC),ZL-1):PRINTCHR$(20);:GOTO890 980 IFZ=134THENPRINT:AD=-1:GOTORETURN 990 IFZL=QITHENIFCC=0THEN890 1000 IFZL=QITHENCC=CC+1 1010 IN$(CC)=IN$(CC)+Z$:PRINTZ$; 1020 GOTO890 1030 REM :: INPUT STARTING ADDRESS 1040 PRINTX$;": ";:GOSUB880:X=VAL(CC$(0)):IFQTTHENRETURN 1050 IFLEFT$(CC$(0),1)="$"THENCC$(0)=RIGHT$(CC$(0),LEN(CC$(0))-1):Z=1 1060 IF(Z=1)ANDNTHENCC$(0)="00"+CC$(0) 1070 IFZ=1THENGOSUB170:X=DE 1080 IF(X<0ORX>MX)OR(Z=1ANDX=0)THENPRINT"INVALID ADDRESS":PRINT:GOTO1040 1090 IFLNTHENPRINTLN$; 1100 N=0:RETURN 1110 REM :: MENU PLOTTING 1120 PRINTCHR$(147);TAB(8);"ASSEMBLY LANGUAGE UTILITY":PRINTLN$;:POKE198,0 1130 Y=2:PRINTSPC(19-(LEN(MN$(MN,X))/2));MN$(MN,X):PRINTLN$:IFNOTOPTHENRETURN 1140 X$=STR$(X):X$=RIGHT$(X$,1):PRINTX$;">";CHR$(32);MN$(MN,1+X):PRINT 1150 X=X+1:Y=Y+1:IFX=5THEN1180 1160 IFMN$(MN,Y)="*"THEN1180 1170 GOTO1140 1180 GETA$:IFA$=""THEN1180 1190 IFA$=CHR$(133)ANDMN<>1THENA=A+1*(MN<>6):MN=LM:X=1:LM=1:GOTO1240 1200 Z=VAL(A$):IF(Z=0)OR(Z=>X)THEN1180 1210 A=A+1:PRINTCHR$(19);:FORX=1TOZ*2+1:PRINT:NEXT:PRINTTAB(3);CHR$(18); 1220 PRINTMN$(MN,Z+1);CHR$(146):FORX=1TO500:NEXT:LM=MN:B=MN:MN=Z+1:X=1 1230 IFMN<>1ANDA=3THENOP=0:MN=B:X=Z+1 1240 GOSUB1110:RETURN 1250 REM :: INITIATION 1260 DIMMN$(6,5) 1270 FORX=1TO6:FORY=1TO5:READMN$(X,Y):NEXTY,X:HE$="0123456789ABCDEF" 1280 FORX=1TO40:LN$=LN$+CHR$(192):NEXT:RETURN 1290 DATA MAIN MENU,CONVERSIONS,CHANGE MEMORY,EXAMINE MEMORY,EXIT UTILITY 1300 DATA CONVERSIONS,DECIMAL TO HEX,HEX TO DECIMAL,DECIMAL TO BINARY 1310 DATA BINARY TO DECIMAL 1320 DATA CHANGE MEMORY,CHANGE LOCATIONS,INSERT MESSAGE,*,* 1330 DATA EXAMINE MEMORY,EXAMINE LOCATION,EXAMINE BITS,*,* 1340 DATA EXIT UTILITY,BREAK INTO MONITOR,QUIT UTILITY,*,* 1350 DATA CHOOSE METHOD OF OUTPUT,DECIMAL VALUES,HEX VALUES,BINARY VALUES 1360 DATA ASC II CODE